package CollectionTest;

import java.util.Objects;
import java.util.TreeSet;

/*
1.TreeSet集合底层实际上是一个TreeMap
2.TreeMap集合底层是一个二叉树
3.放到TreeSet集合中的元素，等同于放到TreeMap集合key部分了
4.TreeSet集合中的元素:无序不可重复，但是可以按照元素的大小顺序自动排序，称为可排序集合
5.对于自定义类型来说，TreeSet可以排序吗？
    无法排序，因为没有指定Person对象之间的比较规则，谁大谁小没有说明
    以下程序出现了这个异常
        java.lang.ClassCastException: class CollectionTest.Person cannot be cast to class java.lang.Comparable
        原因:Person类没有实现java.lang.Comparable接口
 */
public class TreeSetTest1 {
    public static void main(String[] args){
        TreeSet t = new TreeSet();
        Person p1 = new Person("zs");
        Person p2 = new Person("ls");
        Person p3 = new Person("ww");
        Person p4 = new Person();
        //添加元素后无法排序，出现类型转换异常
        t.add(p1);
        t.add(p2);
    }
}
class Person{
    private String name;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}
